#ifndef ABSTRACTDECK_H
#define ABSTRACTDECK_H

// Qt includes
#include <QObject>
#include <QList>

namespace klcDeck
{
    // City Name
    enum City{Atlantis=0, Cibola=1, Aoudaghost=2, Yamatai=3, Karakorum=4};
    
    // Card Value
    enum Value{One=0, Two=1, Three=2, Four=3, Five=4, Six=5, Seven=6, Eight=7, Nine=8, Ten=9};
    
}

using namespace klcDeck;

class AbstractDeck : public QObject
{
    Q_OBJECT
            
    public:
        AbstractDeck(QObject *parent);
        
        int remainingCards();
        
        static int cardsNumber();
        
        static City getCity(int card);
        
        static Value getValue(int card);
        
        static bool isMultiplier(int card);
        
        static int getCard(City city, Value value, bool multiplier);
        
        static QString getName(City city);
        
        static QString getName(Value value, bool isMultiplier);
        
        static QString getName(City city, Value value, bool multiplier);
        
        static QString getName(int card);
        
    protected:
        // Array of card numbers
        QList<int> m_cards;

};

#endif
